﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using ServicioWPF.Clases;
using System.Data;

namespace ServicioWPF
{
    /// <summary>
    /// Lógica de interacción para VentanaProfesor.xaml
    /// </summary>
    public partial class VentanaProfesor : Window
    {
        private static int EstatusToolBar = 0;
        private static int CveEntProfesor;

        private enum ToolBarEstatus { Inicial, Nuevo, Editar, Cancelar, Eliminar, Guardar };


        public VentanaProfesor()
        {
            InitializeComponent();
            cargaDatos();
            EstatusTool(false, ToolBarEstatus.Inicial);
        }

        private void btnCerrar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            // Permite que se pueda mover la ventana por el escritorio, esto es necesario ya que estas ventanas no tiene los bordes predeterminados del sistema operativo.
            if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
                this.DragMove();
        }

        private void cargaDatos()
        {
            dgvProfesor.DataContext = ClaseUsuario.buscarTodosProfesores();
        }

        private void EstatusTool(bool Modo, ToolBarEstatus estatus)
        {
            txtNombre.IsEnabled = Modo;
            txtAP.IsEnabled = Modo;
            txtAM.IsEnabled = Modo;
            txtDireccion.IsEnabled = Modo;
            txtTelefono.IsEnabled = Modo;
            txtCorreo.IsEnabled = Modo;
            txtUsuario.IsEnabled = Modo;
            txtPass1.IsEnabled = Modo;
            txtPass2.IsEnabled = Modo;
            tbtnguardar.IsEnabled = Modo;
            if (estatus == ToolBarEstatus.Inicial)
            {
                tbtnEditar.IsEnabled = false;
                dgvProfesor.IsEnabled = true;
                txtPass2.Visibility = Visibility.Visible;
                lblPass2.Visibility = Visibility.Visible;
                if (dgvProfesor.SelectedIndex == -1)
                    txtBlkEliminarCancelar.Text = "Cancelar";
                else
                    txtBlkEliminarCancelar.Text = "Eliminar";
            }
            if (estatus == ToolBarEstatus.Nuevo)
            {
                txtBlkEliminarCancelar.Text = "Cancelar";
                tbtnEditar.IsEnabled = false;
                EstatusToolBar = 2;
            }
            if (estatus == ToolBarEstatus.Editar)
            {
                txtBlkEliminarCancelar.Text = "Cancelar";
                dgvProfesor.IsEnabled = false;
                EstatusToolBar = 3;
            }
        }

        private void tbtnNuevo_Click(object sender, RoutedEventArgs e)
        {
            EstatusTool(true, ToolBarEstatus.Nuevo);
            dgvProfesor.IsEnabled = false;
            txtPass2.Visibility = Visibility.Visible;
            lblPass2.Visibility = Visibility.Visible;
            limpiaControles();
        }

        private void tbtnEditar_Click(object sender, RoutedEventArgs e)
        {
            if (dgvProfesor.SelectedIndex != -1)
            {
                EstatusTool(true, ToolBarEstatus.Editar);
                txtUsuario.IsEnabled = false;
                txtPass2.Visibility = Visibility.Hidden;
                lblPass2.Visibility = Visibility.Hidden;
            }
            else
                MessageBox.Show("Selecciona una Asignatura");
        }

        private void tbtnguardar_Click(object sender, RoutedEventArgs e)
        {
            //nuevo
            if (EstatusToolBar == 2)
            {
                if (txtPass1.Password != string.Empty)
                {
                    if ((txtPass1.Password) == (txtPass2.Password))
                    {
                        ClaseUsuario us = new ClaseUsuario();
                        us.Nombre = txtNombre.Text;
                        us.ApellidoPaterno = txtAP.Text;
                        us.ApellidoMaterno = txtAM.Text;
                        us.Direccion = txtDireccion.Text;
                        us.Telefono = txtTelefono.Text;
                        us.Correo = txtCorreo.Text;
                        us.UsuarioLogearte = txtUsuario.Text;
                        us.Contrasena = txtPass1.Password;
                        ClaseUsuario.insertaNuevoProfesor(us);
                        cargaDatos();
                        limpiaControles();
                        EstatusTool(false, ToolBarEstatus.Inicial);
                    }
                    else if ((txtPass1.Password) != (txtPass2.Password))
                    {
                        VentanaErrores error = new VentanaErrores();
                        error.lblMensajeError.Content = "La Contraseña no coindide";
                        error.Topmost = true;
                        error.Show();
                    }
                }
                else if ((txtPass1.Password = string.Empty) == (txtPass2.Password = string.Empty))
                {
                    VentanaErrores error = new VentanaErrores();
                    error.lblMensajeError.Content = "Favor de Introducir una Contraseña";
                    error.Topmost = true;
                    error.Show();
                }
            }
            //editar
            else if (EstatusToolBar == 3)
            {
                ClaseUsuario us = new ClaseUsuario();
                us.ClaveEntidad = CveEntProfesor;
                us.Nombre = txtNombre.Text;
                us.ApellidoPaterno = txtAP.Text;
                us.ApellidoMaterno = txtAM.Text;
                us.Direccion = txtDireccion.Text;
                us.Telefono = txtTelefono.Text;
                us.Correo = txtCorreo.Text;
                us.UsuarioLogearte = txtUsuario.Text;
                us.Contrasena = txtPass1.Password;
                if (ClaseUsuario.VerificaLogin(us))
                {                
                    ClaseUsuario.actualizaUsuario(us);
                    cargaDatos();
                    limpiaControles();
                    EstatusTool(false, ToolBarEstatus.Inicial);
                }
                else
                {
                    VentanaErrores error = new VentanaErrores();
                    error.lblMensajeError.Content = "La Contraseña es incorrecta";
                    error.Topmost = true;
                    error.Show();
                }
            }
        }

        private void tbtnEliminarCancelar_Click(object sender, RoutedEventArgs e)
        {
            if (txtBlkEliminarCancelar.Text == "Cancelar")
            {
                EstatusTool(false, ToolBarEstatus.Inicial);
                limpiaControles();
                if (dgvProfesor.SelectedIndex != -1)
                    txtBlkEliminarCancelar.Text = "Eliminar";
                txtPass2.Visibility = Visibility.Visible;
                lblPass2.Visibility = Visibility.Visible;
            }
            else if (txtBlkEliminarCancelar.Text == "Eliminar")
            {
                VentanaShowDialog sd = new VentanaShowDialog();
                sd.lblMensaje.Content = "¿Deseas eliminar el registro?";
                sd.Topmost = true;
                sd.ShowDialog();
                if (ServicioWPF.VentanaShowDialog.UsuarioAcepta)
                {
                    ClaseUsuario us = new ClaseUsuario();
                    us.ClaveEntidad = CveEntProfesor;
                    us.EliminaProfesor();
                    cargaDatos();
                    limpiaControles();
                    EstatusTool(false, ToolBarEstatus.Inicial);
                }
            }
        }

        private void limpiaControles()
        {
            //txtNombre.Text = string.Empty;
            //txtDescripcion.Text = string.Empty;
            //txtSemestre.Text = string.Empty;
            //cmBxSemestre.SelectedIndex = -1;
            txtNombre.Text = string.Empty;
            txtAP.Text = string.Empty;
            txtAM.Text = string.Empty;
            txtDireccion.Text = string.Empty;
            txtTelefono.Text = string.Empty;
            txtCorreo.Text = string.Empty;
            txtUsuario.Text = string.Empty;
            txtPass1.Password = string.Empty;
            txtPass2.Password = string.Empty;
        }

        private void dgvProfesor_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ClaseUsuario us = new ClaseUsuario();
            DataRowView drv = dgvProfesor.CurrentCell.Item as DataRowView;
            CveEntProfesor = Convert.ToInt32(drv.Row[0]);
            if (drv != null)
            {
                us.ClaveEntidad = Convert.ToInt32(drv.Row[0]);
                us.CargaMisDatos();
                txtNombre.Text = us.Nombre;
                txtAP.Text = us.ApellidoPaterno;
                txtAM.Text = us.ApellidoMaterno;
                txtDireccion.Text = us.Direccion;
                txtTelefono.Text = us.Telefono;
                txtCorreo.Text = us.Correo;
                txtUsuario.Text = us.UsuarioLogearte;

                if (dgvProfesor.SelectedCells.Count > 0)
                {
                    if (dgvProfesor.SelectedIndex != -1)
                    {
                        txtBlkEliminarCancelar.Text = "Eliminar";
                        tbtnEditar.IsEnabled = true;
                    }
                    else
                    {
                        txtBlkEliminarCancelar.Text = "Cancelar";
                        tbtnEditar.IsEnabled = false;
                    }
                }
            }
        }
    }
}
